#include <iostream>
#include <jsoncpp/json/json.h>
#include <string>
using namespace std;

int main()
{
    // 创建一个 Json::Value 类型的对象 root，它将作为 JSON 对象的根。
    // Json::Value root;
    // root["x"] = 1;
    // root["y"] = 2;
    // root["op"] = "+";
    // root["desc"] = "add operation";
    // // 创建一个 Json::FastWriter 对象 w，用于将 JSON 对象转换为字符串。
    // // Json::FastWriter w;
    // Json::StyledWriter w;
    // // 使用 w.write(root) 将 root JSON 对象转换为字符串，并存储在变量 res 中。
    // string res = w.write(root);
    // cout << res << endl;


    // // 下面是反序列化
    // Json::Value v;      // 用来存储解析后的 JSON 数据。
    // Json::Reader r;     // 用来解析 JSON 字符串。
    // r.parse(res, v);    // 将 JSON 字符串 res 解析到 v 对象中。
    // int x = v["x"].asInt();
    // int y = v["y"].asInt();
    // string op = v["op"].asString();
    // string desc = v["desc"].asString();
    // cout << x << endl;
    // cout << y << endl;
    // cout << op << endl;
    // cout << desc << endl;
    // 序列化
    Json::Value inner;
    inner["hello"] = "你好";
    inner["world"] = "世界";
    Json::Value root;
    root["test"] = inner;
    Json::StyledWriter w;
    string res = w.write(root);
    cout << res;
    // 反序列化
    Json:: Value v;
    Json:: Reader r;
    r.parse(res, v);
    cout << v["test"]["hello"].asString() << endl;
    cout << v["test"]["world"].asString() << endl;
    return 0;
}